﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TanmiaGrp.Basis
{
    public enum ErrorTypeEnum
    {
        None,

        /// <summary>
        /// خطأ في المصادقة مع مخدم قواعد البيانات
        /// </summary>
        LoginFailed,

        /// <summary>
        /// اسم مخدم قاعدة البيانات غير صحيح أو لا يمكن الوصول إليه
        /// </summary>
        ConnectionFailed,

        /// <summary>
        /// لا يمكن اضافة سجل مرتين
        /// </summary>
        DuplicateValue,
        ValidationError
    }

    [Serializable]
    public class RepositoryException : BaseAppException
    {
        public ErrorTypeEnum ErrorType { get; private set; }

        public string BusinessEntityName { get; private set; }

        public RepositoryException() { }
        public RepositoryException(string message) : base(message) { }
        public RepositoryException(string message, Exception inner) : base(message, inner) { }
        public RepositoryException(string message, string bizEntityName, Exception inner) : base(message, inner) { this.BusinessEntityName = bizEntityName; }
        public RepositoryException(string message, ErrorTypeEnum errType, Exception inner) : base(message, inner) { this.ErrorType = errType; }
        protected RepositoryException(
          System.Runtime.Serialization.SerializationInfo info,
          System.Runtime.Serialization.StreamingContext context)
            : base(info, context) { }

    }
}
